其他
ggplot 绘制三角形相关性图
一个选择
学习一下怎么使用 ggplot 绘制三角形的相关性图.
1、制作三角形矩阵
要绘制三角形相关性图,我们首先得准备三角形矩阵,在 R 里有个很有用的函数:upper.tri 和 lower.tri 函数,下面介绍使用该函数进行三角形矩阵的操作:
# 加载内置数据集
data('mtcars')
# 计算相关性系数
corda <- data.frame(cor(mtcars))
# 查看内容
head(corda[1:3,1:5])
mpg cyl disp hp drat
mpg 1.0000000 -0.8521620 -0.8475514 -0.7761684 0.6811719
cyl -0.8521620 1.0000000 0.9020329 0.8324475 -0.6999381
disp -0.8475514 0.9020329 1.0000000 0.7909486 -0.7102139
可以看到这是一个对称矩阵,有大概一半的信息是重复的:
使用 upper.tri
或 lower.tri
函数对其中一半信息进行赋值操作:
# 上三角操作
corda[upper.tri(corda)] <- NA
# 计算相关性系数
corda <- data.frame(cor(mtcars))
# 下三角操作
corda[lower.tri(corda)] <- NA
2、绘图
有了三角形矩阵数据后,我们就可以进行绘图了,首先需要转换为长数据格式:
# 加载R包
library(reshape2)
library(tidyverse)
# 增加行名列
corda$y <- rownames(corda)
# 宽数据转长数据
da <- melt(data = corda) %>% na.omit()
# 因子化
da$variable <- factor(da$variable,levels = unique(da$variable))
da$y <- factor(da$y,levels = unique(da$y))
# 查看内容
head(da,3)
y variable value
1 mpg mpg 1.0000000
2 cyl mpg -0.8521620
3 disp mpg -0.8475514
绘图:
# plot
p <- ggplot(da) +
# 矩形图层
geom_tile(aes(x = variable,y = y),fill = 'white',
color = 'grey20',size = 1) +
# 点图层
geom_point(aes(x = variable,y = y,fill = value,size = value),
shape = 21,color = 'black') +
theme_minimal() +
# 主题调整
theme(panel.grid = element_blank(),
axis.text = element_text(color = 'black',size = 20),
axis.text.x = element_text(angle = 45,hjust = 0)) +
# x轴标签位置
scale_x_discrete(position = 'top') +
# 点颜色
scale_fill_gradientn(colors = colorRampPalette(c("#1E3163", "#00C1D4", "#FFED99","#FF7600"))(10)) +
# 点大小范围
scale_size(range = c(7,14)) +
# 图例设置
guides(size = 'none',fill = guide_colorbar(title = 'Corr',
barwidth = 1.5,barheight = 15,
frame.colour = 'black',
ticks.colour = "black")) +
xlab('') + ylab('')
p
旋转一下,换个方向:
# 旋转一下
p + coord_flip() +
theme(axis.text.x = element_text(angle = 45,hjust = 1))
换个形状:
ggplot(da) +
# 矩形图层
geom_tile(aes(x = variable,y = y),fill = 'white',
color = 'grey20',size = 1) +
# 点图层
geom_point(aes(x = variable,y = y,color = value,size = value),
shape = 'O') +
theme_minimal() +
# 主题调整
theme(panel.grid = element_blank(),
axis.text = element_text(color = 'black',size = 20),
axis.text.x = element_text(angle = 45,hjust = 0)) +
# x轴标签位置
scale_x_discrete(position = 'top') +
# 点颜色
scale_color_gradientn(colors = colorRampPalette(c("#1E3163", "#00C1D4", "#FFED99","#FF7600"))(10)) +
# 点大小范围
scale_size(range = c(7,14)) +
# 图例设置
guides(size = 'none',color = guide_colorbar(title = 'Corr',
barwidth = 1.5,barheight = 15,
frame.colour = 'black',
ticks.colour = "black")) +
xlab('') + ylab('')
方形:
# squre
ggplot(da) +
# 矩形图层
geom_tile(aes(x = variable,y = y),fill = 'white',
color = 'grey20',size = 1) +
# 点图层
geom_point(aes(x = variable,y = y,fill = value,size = value),
shape = 22,color = 'black') +
theme_minimal() +
# 主题调整
theme(panel.grid = element_blank(),
axis.text = element_text(color = 'black',size = 20),
axis.text.x = element_text(angle = 45,hjust = 0)) +
# x轴标签位置
scale_x_discrete(position = 'top') +
# 点颜色
scale_fill_gradientn(colors = colorRampPalette(c("blue", "white", "red"))(10)) +
# 点大小范围
scale_size(range = c(7,14)) +
# 图例设置
guides(size = 'none',fill = guide_colorbar(title = 'Corr',
barwidth = 1.5,barheight = 15,
frame.colour = 'black',
ticks.colour = "black")) +
xlab('') + ylab('')
3、道阻且长
欢迎加入生信交流群。加我微信我也拉你进 微信群聊 老俊俊生信交流群
哦。
群二维码:
老俊俊微信:
知识星球:
所以今天你学习了吗?
欢迎小伙伴留言评论!
今天的分享就到这里了,敬请期待下一篇!
最后欢迎大家分享转发,您的点赞是对我的鼓励和肯定!
如果觉得对您帮助很大,赏杯快乐水喝喝吧!
往期回顾
◀Ribo-seq 质控软件:ribosomeProfilingQC
◀CIRCexplorer3: 对 circRNA 进行相对定量
◀...